#ifndef __TEXTURE_SDL_H__
#define __TEXTURE_SDL_H__

#include "render/itexture.h"

namespace rengine3d {

	class CTextureSDL: public ITexture {
	public:
		CTextureSDL(const string_t& name, textureType_t type, bool useMipMap, textureTarget_t target, bool compress = false);
		virtual ~CTextureSDL();

		virtual void Init(void);
		virtual void Shutdown(void);

		virtual bool Create(uint width, uint height, CVec4 color);
		virtual bool Create(unsigned char* data, int channels, const CVec3& size);

		virtual void Update(float timeStep);

		virtual bool Reload(void);
		virtual void Unload(void);

		virtual void Bind( uint textureUnit = 0 );
		virtual void UnBind(void);

		virtual real GetGamma(void);
		virtual void SetGamma(real gamma);

		virtual void SetFilter(textureFilter_t filter);
		virtual void SetAnisotropyDegree(real value);

		virtual void SetWrapS(textureWrap_t mode);
		virtual void SetWrapT(textureWrap_t mode);
		virtual void SetWrapR(textureWrap_t mode);

	private:
		uint			m_id;
	};
}
#endif
